This invention relates to an apparatus and method for protecting computer code placed in internal circuitry within a computer, sometimes known as firmware. This invention accomplishes this by "scrambling" or altering data placed on the data bus from circuit firmware according to a given encoding word and a predetermined circuit matrix.
The unauthorized copying of data placed in firmware poses a threat to the integrity of the computer industry. Typically, the quantity of data placed in firmware is not great, but it is often extremely crucial to the operation of a particular machine (e.g. computer bootstraps, video games, computer operating systems and the like). For factory programmed read-only memories (ROMs) or for field programmable read-only memories (PROMs) the stored data may reveal crucial information about the operation of the system. One approach to protecting such data is to provide a fusible link in the array so that the data, once programmed, simply cannot be externally accessed. See, e.g., R. Birkner, et al., U.S. Pat. No. 4,124,899, "Programmable Read-Only Memory", which is hereby incorporated by reference. This approach has the disadvantage that, once the fuse is opened, the PROM may not be altered and the use of diagnostic routines is thereby inhibited.
Copy protection schemes fall into four broad categories: hardware dependent approaches, load format alteration, software that checks the environment as it executes, and software that executes through a "filter". In each case the protection schemes involve an interaction of software and hardware. Where software is used, a microprocessor is usually involved so that one convenient technique of copying is to intercept the instructions and data supplied to the microprocessor. This invention makes interception of that data more difficult. The various approaches that have been used to protect software are discussed in J. Commander, et al., "How Safe is Your Software?", Microcomputing, July 1982 p. 60 which is hereby incorporated by reference.
It is desirable for data protection circuitry to be composed of as few components as possible. This yields two benefits. First, the amount of area utilized in a particular integrated circuit chip for the purposes of data protection circuitry is held to a minimum. Second, each component in a particular data path slows the propagation of data by a specific amount determined by the characteristics of the device in the data path; the fewer components in the data path the faster the circuit can operate.
It is an object of this invention to encode data carried on data lines running between integrated circuits in a certain predetermined manner in order to protect the data carried upon those data lines. Further, it is an object of this invention to do this with a minimum number of components.